#!/bin/bash
#方法一：
#   1,   1,   2,    3,    5,     8,    13, 21, 34, 55, 89,
# num1 num2 value
#      num1  num2  value
#      	           num1  num2  value
num1 = 1
num2 = 1
Fibo = [1, 1]
for value in range(2,101):
    if value == num1 + num2:
        Fibo.append(value)
        num1 = num2
        num2 = value
print(Fibo)

#方法二，根据公式F(1)=1，F(2)=1, F(n)=F(n - 1)+F(n - 2)（n ≥ 3，n ∈ N*）：
Fibo = []
seq = 0
FiboItem = 0
while True:
    if seq < 2:
        FiboItem = 1
        Fibo.append(FiboItem)
    else:
        FiboItem = Fibo[seq - 1] + Fibo[seq - 2]
        if FiboItem > 100:
            break
        Fibo.append(FiboItem)
    seq += 1
print(Fibo)

#输出指定位数斐波那契数列，最多只能11位（一百以内）

num = input('Please input the number: ')
if num == str(1):print('[1, ]')
if num == str(2):print('[1, 1]')
if int(num) > 11:
    print('错误！一百以内只有11个值。')
    exit
if int(num) > 2:
    count = 1
    num1 = 1
    num2 = 1
    list = [1, 1, ]
    for value in range(2,100):
        if value == num1 + num2:
            list.append(value)
            num1 = num2
            num2 = value
            count += 1
            if len(list) == int(num):
                print(list)
                break


# -----------------
# 变量名开头小写，一般约定是类名开头大写
# 方法一方法而完成的都不错
# 第三种方法，有两个问题，一个是经常用int和str进行数据转换，为什么不输入之后直接int转换完成
# 还一个就是没必要进行数字判断，是不是比11小，因为做题默认前提是不知道数列是什么
